#ifndef _SE_OPENGLTEXTRUE_
#define _SE_OPENGLTEXTRUE_

#include "Render/Texture.h"

namespace SE
{
	class OpenGLTexture final : public Texture
	{
	private:
		String				mPath;
		Boolean				mIsLoaded;
		Ref<TextureBuffer>	mTextureBuffer;

	public:
		OpenGLTexture(const String& filePath);
		OpenGLTexture(const Ref<TextureBuffer>& textureBuffer);
		virtual ~OpenGLTexture();

		virtual U32				getRenderID() const override;
		virtual const String&	getPath() const override;
		virtual U32				getSize(const U32 dimension) const override;
		virtual Boolean			isLoaded() const override;

		virtual void bind(const U32 slot) const override;

		virtual Boolean operator==(const Texture& other) const override;
	};
} // !namespace SE

#endif // !_SE_OPENGLTEXTRUE_